package algorithm;
import java.util.Scanner;
public class yhsanjiao {

        public static void main(String[] args) {
            Scanner s=new Scanner(System.in);
            System.out.println("请输入杨辉三角的层数：");//为了输出美观，层数不要超过13.若层数需要超过13，可以通过添加输出杨辉三角中的"\t"来运行。
            int row=s.nextInt();//输入一个杨辉三角的层数。
            //确定二维数组的长度
        /*
        这个二维数组中有row个一维数组;
        因为通过杨辉三角的规律，第零行有一个值，第一行有三个值（包含0），第二行有五个值以此类推，第row行有2*row+1个值；
        所以每个一维数组的长度为2*row+1；
         */
            int[][] arr=new int[row][2*row+1];

            //给第一行最中间赋值1
            arr[0][row]=1;
            //将杨辉三角中的数表示出来    第一行arr[0][row]直接赋值，所以从第二行开始
            for(int i=1;i< arr.length;i++){
                //每一行从第二个数开始到倒数第二个结束，因为最左边没有左上的值，最右边没有右上的值都为0
                for(int j=1;j<arr[i].length-1;j++){
                    //杨辉三角中的值等于它的左上角的值+右上角的值。
                    arr[i][j]=arr[i-1][j-1]+arr[i-1][j+1];

                }
            }
            //遍历输出杨辉三角
            //从第一个一维数组开始
            for(int i=0;i< arr.length;i++){
                //输出第i个一维数组中的值
                for(int j=0;j<arr[i].length;j++){
                    //如果值不等于零时，将它输出
                    if(arr[i][j]!=0){
                        System.out.print(arr[i][j]+"\t");
                        //如果值等于零，用空格代替
                    }else{
                        System.out.print(" \t");
                    }
                }
                System.out.println();
            }



        }
    }
